#define  _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
using namespace std;



//最长湍流子数组
//自己oj的，感觉有蒙混过关的嫌疑，等于的情况以及数组大小是1和2的情况进行了取巧，单独拿出来讨论，加上等于的情况后思路就不太清楚了
class Solution {
public:
    int maxTurbulenceSize(vector<int>& arr) {
        int n = arr.size();

        if (n == 1) return 1;
        if (n == 2 && arr[0] != arr[1])  return 2;
        else if (n == 2 && arr[0] == arr[1])  return 1;

        //创建dp表
        vector<int> dp(n, 2);
        int ret = 0;
        //填表
        for (int i = 2; i < n; i++)
        {
            if ((arr[i - 2] > arr[i - 1]) && (arr[i - 1] < arr[i]))
            {
                dp[i] = dp[i - 1] + 1;
            }
            else if ((arr[i - 2] < arr[i - 1]) && (arr[i - 1] > arr[i]))
            {
                dp[i] = dp[i - 1] + 1;
            }
            else if ((arr[i - 2] == arr[i - 1]) && (arr[i - 1] == arr[i]))
            {
                dp[i] = dp[i - 1] = dp[i - 2] = 1;
            }
            ret = max(ret, dp[i]);
        }
        return ret;
    }
};
int main()
{

	return 0;
}